﻿using System;
using System.Windows.Forms;
using Useful.MVP2;

namespace FileDuplicateRemover.Gui
{
    public interface IDuplicateListView : IListView
    {
        event EventHandler<EventArgs> CollapseClicked;
        event EventHandler<EventArgs> CheckItemClicked;
        event EventHandler<EventArgs> CheckNotFirstClicked;
        event EventHandler<EventArgs> UnCheckAllClicked;
        event EventHandler<EventArgs> BeforeDirectorySelected;
        event EventHandler<EventArgs> AfterDirectorySelected;
        event EventHandler<EventArgs> DeleteCheckedClicked;
        event EventHandler<FormClosingEventArgs> FormClosingEvent;
        event EventHandler<EventArgs> BreakProgressClicked;
        event EventHandler<EventArgs> FileNameClicked;
        event EventHandler<EventArgs> FormShown;
        event EventHandler<BoolEventArgs> HideEmptyClicked;
        event EventHandler<EventArgs> TimerProgressTick;
        event EventHandler<EventArgs> CreateDirectoryTreeClicked;
        event EventHandler<EventArgs> CalcHashClicked;
        event EventHandler<StringEventArgscs> LoadViewModelClicked;
        event EventHandler<StringEventArgscs> SaveViewModelClicked;

        string SelectedRootDirectory { get; set; }
        string InfoText { get; set; }
        string ActionHeader { get; set; }

        bool EnableWorkWithGrid { set; }
        bool EnableWorkWithFormButtons { set; }
        bool EnableDeleteChecked { get;  set; }
        bool EnableActionBreakButton { get; set; }
        bool EnableSearchDuplicate { get; set; }
        bool EnableTimerProgress { get; set; }
        bool EnableCreateTree { get; set; }
        bool EnableCalcHash { get; set; }
        bool EnableSelectDirectory { get; set; }

        bool HideEmpty { get; set; }

        void Collapse(bool hide);
        void GroupBy(string name);
        void SetActionProgesssCurrentVal(int val);
        int MaximumProgressValue { get; set; }

        void RowVisible(GridItem item, bool visible);

        string SelectedDataFileFullName { get; set; }
    }
}
